Heterogeneous multicore systems are processing systems that contain two or more types of processors. For example, a heterogeneous multicore system may include two or more of a central processing unit (CPU), graphics processing unit (GPU), digital signal processor (DSP), or other types of processing cores. In such systems, each processor may have its own local cache for storing frequently used data. In addition, a given processor may have multiple parallel cores.
In some instances, it is desirable to share data used by one type of processor in its local cache with another type of processor. In such instances, a data handoff technique may be used to transfer the data. One such data handoff technique involves flushing the data from a local cache of one processor and transferring the data to a system memory. A second processor may then copy the data from system memory into its local cache.
As another example, some techniques may utilize a cache coherency mechanism to handle data transfers between processing cores. A cache coherency mechanism keeps track of what processing core(s) are allowed to access certain data stored in a central system memory and to copy that data to their local cache. This mechanism ensures the integrity of data that is frequently used by many different processing cores. However, such systems are often very complex and may involve undesirable latency when accessing data.
Both techniques described above require substantial performance and power resources. This leads to significant drawbacks for devices with limited power and performance potential (e.g., wireless devices).